﻿using System;
namespace Engine.NetClasses
{
    public interface IPacket
    {
        /// <summary>
        /// Размер пакета
        /// первые 2 байта не учитываются
        /// </summary>
        short Size { get; }
        /// <summary>
        /// Направление Пакета 
        /// Истина пакет от клиента        
        /// </summary>
        bool ClientPacket { get; }
        /// <summary>
        /// Направление Пакета 
        /// Истина пакет от сервера        
        /// </summary>
        bool ServerPacket { get; }
        /// <summary>
        /// Название пакета
        /// </summary>
        string Name { get; }
        /// <summary>
        /// Тип пакета
        /// </summary>
        byte PacketType { get; }
        /// <summary>
        /// Конвертация пакета в структуру
        /// </summary>
        /// <param name="data">масив данных</param>
        void Convert(byte[] data);
        /// <summary>
        /// Проверка на пустую структуру
        /// </summary>
        /// <returns>Истина пустаяб Ложь непустая</returns>
        bool isNull();
        /// <summary>
        /// преобразует структуру в масив байт
        /// </summary>
        /// <returns>массив байт</returns>
        byte[] GetByte();
        bool NeedCrypt { get; }
        bool DoubleCrypt { get; }
    }
}
